package com.yupi.yupicturebackend.api.aliyunai.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;

/**
 * 图像生成任务请求参数类
 */
@Data
public class CreateImageTaskRequest implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 模型名称，必选，固定为"qwen-image"
     */
    private String model = "qwen-image";

    /**
     * 输入的基本信息，必选
     */
    private Input input;

    /**
     * 图像处理参数，可选
     */
    private Parameters parameters;

    /**
     * 输入的基本信息内部类
     */
    @Data
    public static class Input implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 模型对话列表，必选，目前仅支持单轮对话
         */
        private List<Message> messages;

        /**
         * 对话消息内部类
         */
        @Data
        public static class Message implements Serializable {

            private static final long serialVersionUID = 1L;

            /**
             * 消息的角色，必选，必须设置为"user"
             */
            private String role = "user";

            /**
             * 消息的内容，包括图像与提示词，必选
             * 注意：只能包含一个text
             */
            private List<Content> content;

            /**
             * 消息内容内部类
             */
            @Data
            public static class Content implements Serializable {

                private static final long serialVersionUID = 1L;

                /**
                 * 正向提示词，必选
                 * 描述生成图像中期望包含的元素和视觉特点
                 * 支持中英文，长度不超过800个字符
                 */
                private String text;
            }
        }
    }

    /**
     * 图像处理参数内部类
     */
    @Data
    public static class Parameters implements Serializable {

        private static final long serialVersionUID = 1L;

        /**
         * 可选，反向提示词，用来描述不希望在画面中看到的内容
         * 支持中英文，长度不超过500个字符
         */
        @JsonProperty("negative_prompt")
        private String negativePrompt;

        /**
         * 可选，输出图像的分辨率，格式为宽*高
         * 默认值为1328*1328
         * 可选值：1664*928、1472*1140、1328*1328、1140*1472、928*1664
         */
        private String size;

        /**
         * 可选，生成图片的数量，默认值为1
         * 注意：当前仅支持生成1张图像，设置其他数值将报错
         */
        private Integer n = 1;

        /**
         * 可选，是否开启prompt智能改写，默认值true
         * true：开启智能改写
         * false：不开启智能改写
         */
        @JsonProperty("prompt_extend")
        private Boolean promptExtend = true;

        /**
         * 可选，是否添加水印标识，默认值false
         * false：不添加水印
         * true：添加水印（位于图片右下角，文案为“Qwen-Image生成”）
         */
        private Boolean watermark = false;

        /**
         * 可选，随机数种子，取值范围是[0, 2147483647]
         * 如果不提供，则算法自动生成一个随机数作为种子
         */
        private Integer seed;
    }
}
    